//
//  ZAQComposeTextView+Extension.swift
//  ZAQWBDZT
//
//  Created by 赵安庆 on 16/10/8.
//  Copyright © 2016年 zaq. All rights reserved.
//

import UIKit
extension ZAQComposeTextView {

func insertEmoticon(emoticon: ZAQEmoticon)  {
    //  通过富文本获取对应文本内容
    var emoticonText: String {

        var result = ""
        self.attributedText.enumerateAttributes(in: NSMakeRange(0, self.attributedText.length), options: []) { (info, range, _) in



            if let attachement = info["NSAttachment"] as? ZAQTextAttachment {
                //  能够获取文本附件表示是图片
                let chs = attachement.emoticon?.chs
                result += chs!

            } else {
                //  表示文本
                //  通过范围截取富文本对应的文本内容
                let text = self.attributedText.attributedSubstring(from: range).string
                result += text
            }




        }

        return result

    }

    if emoticon.type == "0" {
        //  点击图片表情
        //            let chs = emoticon.chs!

        //            textView.insertText(chs)
        //  想要显示图片,需要设置富文本
        //  记录上一次富文本
        let lastAttbutedString = NSMutableAttributedString(attributedString: self.attributedText)
        //  图片转成富文本的流程
        let attributedStr = NSAttributedString.attributedStringWithEmoticon(emoticon: emoticon, font: self.font!)

        //  添加这次点击的表情富文本
        //            lastAttbutedString.append(attributedStr)

        //  获取文本选中的范围
        var selectedRange = self.selectedRange
        //  根据指定的选中范围替换富文本
        lastAttbutedString.replaceCharacters(in: selectedRange, with: attributedStr)

        //  设置富文本的字体
        lastAttbutedString.addAttribute(NSFontAttributeName, value: self.font!, range: NSMakeRange(0, lastAttbutedString.length))

        //  4. 设置设置富文本
        self.attributedText = lastAttbutedString
        //  修改选中位置的光标,每次点击表情光标位置加1
        selectedRange.location += 1
        //  修改选中范围的长度为0
        selectedRange.length = 0

        //  设置textView的选中光标范围
        self.selectedRange = selectedRange

        //  发送文字改变的通知 (因为添加富文本系统不会发送文字改变的通知)
        NotificationCenter.default.post(name: NSNotification.Name.UITextViewTextDidChange, object: nil)
        //  同样代理方法需要自己调用
        //  ? 表示判断我们这个代理方法是否实现, 如果实现那么直接调用,否则返回nil
        //  ! 表示向对象保证我的代理方法一定实现了你去用吧
        self.delegate?.textViewDidChange?(self)

    } else {
        //  点击emoji标签
        let emoji = (emoticon.code! as NSString).emoji()
        self.insertText(emoji!)
    }
}

}

